home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.4)
-
- import pty
- import os
- import sys
- import signal
- from test.test_support import verbose, TestFailed, TestSkipped
- TEST_STRING_1 = 'I wish to buy a fish license.\n'
- TEST_STRING_2 = 'For my pet fish, Eric.\n'
- if verbose:
-
- def debug(msg):
- print msg
-
- else:
-
- def debug(msg):
- pass
-
-
- def test_basic_pty():
-
- try:
- debug('Calling master_open()')
- (master_fd, slave_name) = pty.master_open()
- debug("Got master_fd '%d', slave_name '%s'" % (master_fd, slave_name))
- debug('Calling slave_open(%r)' % (slave_name,))
- slave_fd = pty.slave_open(slave_name)
- debug("Got slave_fd '%d'" % slave_fd)
- except OSError:
- raise TestSkipped, 'Pseudo-terminals (seemingly) not functional.'
-
- if not os.isatty(slave_fd):
- raise TestFailed, 'slave_fd is not a tty'
-
- debug('Writing to slave_fd')
- os.write(slave_fd, TEST_STRING_1)
- s1 = os.read(master_fd, 1024)
- sys.stdout.write(s1.replace('\r\n', '\n'))
- debug('Writing chunked output')
- os.write(slave_fd, TEST_STRING_2[:5])
- os.write(slave_fd, TEST_STRING_2[5:])
- s2 = os.read(master_fd, 1024)
- sys.stdout.write(s2.replace('\r\n', '\n'))
- os.close(slave_fd)
- os.close(master_fd)
-
-
- def handle_sig(sig, frame):
- raise TestFailed, 'isatty hung'
-
- old_alarm = signal.signal(signal.SIGALRM, handle_sig)
- signal.alarm(10)
-
- try:
- test_basic_pty()
- finally:
- signal.alarm(0)
- signal.signal(signal.SIGALRM, old_alarm)
-
- debug('calling pty.fork()')
- (pid, master_fd) = pty.fork()
- if pid == pty.CHILD:
- if not os.isatty(1):
- debug("Child's fd 1 is not a tty?!")
- os._exit(3)
-
- debug('In child, calling os.setsid()')
-
- try:
- os.setsid()
- except OSError:
- debug('Good: OSError was raised.')
- except AttributeError:
- debug('No setsid() available ?')
- except:
- debug('An unexpected error was raised.')
- os._exit(1)
-
- debug('os.setsid() succeeded! (bad!)')
- os._exit(2)
- os._exit(4)
- else:
- debug('Waiting for child (%d) to finish.' % pid)
- (pid, status) = os.waitpid(pid, 0)
- res = status >> 8
- debug('Child (%d) exited with status %d (%d).' % (pid, res, status))
- if res == 1:
- raise TestFailed, 'Child raised an unexpected exception in os.setsid()'
- elif res == 2:
- raise TestFailed, 'pty.fork() failed to make child a session leader.'
- elif res == 3:
- raise TestFailed, 'Child spawned by pty.fork() did not have a tty as stdout'
- elif res != 4:
- raise TestFailed, 'pty.fork() failed for unknown reasons.'
-
- os.close(master_fd)
-